package com.xqx.thread.initial;

/**
 * 线程学习：继承thread类
 */
class Threa2 extends Thread {
    private String name;

    public Threa2(String name) {
        this.name = name;
    }

    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(name + "运行：" + i);
            try {
                sleep((int) Math.random() * 10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class Threa1 {
    public static void main(String[] args) {
        Threa2 mth1 = new Threa2("A");
        Threa2 mth2 = new Threa2("B");
        mth1.start();
        mth2.start();
    }
}
/**
 * 注意：start()方法的调用后并不是立即执行多线程代码，而是使得该线程变为可运行态（Runnable），什么时候运行是由操作系统决定的。
 * 从程序运行的结果可以发现，多线程程序是乱序执行。因此，只有乱序执行的代码才有必要设计为多线程。
 * Thread.sleep()方法调用目的是不让当前线程独自霸占该进程所获取的CPU资源，以留出一定时间给其他线程执行的机会。
 * 实际上所有的多线程代码执行顺序都是不确定的，每次执行的结果都是随机的。
 *
 */